package cn.qicaiwang.open.qxyApi.util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JsonParserUtil {

    /**
     * 通用方法：根据动态路径解析 JSON 并提取目标值
     *
     * @param responseData JSON 格式的字符串
     * @param path         动态路径，例如 "data.data.result.jcxx.taxCompanyCreditLevelDtoPageResult"
     * @return 提取到的目标值（可能是 JSONArray 或 JSONObject，或者其他类型）。如果解析失败或字段不存在则返回 null。
     */

    public static Object parseResponseDataByPath(String responseData, String path) {
        if (responseData == null || responseData.isEmpty() || path == null || path.isEmpty()) {
            return null;
        }
        try {
            JSONObject responseJson = JSONObject.parseObject(responseData);
            String[] keys = path.split("\\.");
            JSONObject current = responseJson;

            for (int i = 0; i < keys.length - 1; i++) {
                String key = keys[i];
                if (current != null && current.containsKey(key)) {
                    Object value = current.get(key);
                    if (value instanceof JSONObject) {
                        current = (JSONObject) value;
                    } else {

                        return null;
                    }
                } else {

                    return null;
                }
            }

            String lastKey = keys[keys.length - 1];
            if (current != null && current.containsKey(lastKey)) {
                Object targetValue = current.get(lastKey);
                System.out.println("Extracted value: " + targetValue);
                return targetValue;
            }
        } catch (Exception e) {
            System.err.println("Error parsing responseData: " + e.getMessage());
        }
        return null;
    }

    /**
     * 辅助方法：从通用解析结果中提取 JSONArray（如果目标值是 JSONArray）
     *
     * @param result 通用解析结果
     * @return 如果结果是 JSONArray，则返回；否则返回空数组
     */
    public static JSONArray extractJsonArray(Object result) {
        if (result instanceof JSONArray) {
            return (JSONArray) result;
        } else if (result instanceof JSONObject) {
            // 如果需要，可以将 JSONObject 转换为某种形式的 JSONArray（视需求而定）
            return new JSONArray(); // 返回空数组
        } else {
            return new JSONArray(); // 非数组类型返回空数组
        }
    }


}